/*!
 *  \file       GaussianSignalGenerator.hpp
 *  \brief      Definizione della classe \c GaussianSignalGenerator
 *  \author     Davide Scola <S2299453@studenti.unige.it>
 *  \author	Minetti Alberto <S3064777@studenti.unige.it>
 *  \version    1.0
 *
 */

#ifndef _GAUSSIAN_SIGNAL_GENERATOR_H
#define _GAUSSIAN_SIGNAL_GENERATOR_H

/*!
 *  \brief      Definizione della classe \c GaussianSignalGenerator
 */
template< class tType >
class GaussianSignalGenerator : public ISignalGenerator< tType > {
  public :
    GaussianSignalGenerator( const unsigned long int );
    GaussianSignalGenerator( GaussianSignalGenerator< tType > const& );
    GaussianSignalGenerator( const tType, const tType, const unsigned long int );
    
    virtual GaussianSignalGenerator& operator=( const GaussianSignalGenerator& );
    
    // interface methods
    virtual tType operator() ( void );
    
  private :
    tType mean_,	/*!< Valore della media aritmetica per la gaussiana */
	  variance_,	/*!< Valore della varianza per la gaussiana */
	  currPoint_,	/*!< Punto corrente ne calcolo della Gaussiana */
	  iStep_;	/*!< Incremento tra i punti della Gaussiana */
};

#endif              /* _GAUSSIAN_SIGNAL_GENERATOR_H */
